package chixing.day07.work;

public class Test {
    public static void main(String[] args) {
        Shape s1 = new Circle();
        Shape s2 = new Square();
        s1.draw();
        s2.draw();
        //编译时看父类，运行时看子类” 的机制，使得同一套代码（父类接口）可以操作不同的子类对象并表现出不同行为，
        // 这就是多态的核心作用 ——提高代码的灵活性和可扩展性。
    }
//    public static void main(String[] args) {
//      B d = new B();
//    }
}
//1.先输出A，再输出B
//创建子类对象时，会先执行父类的构造函数，再执行子类的构造函数。
// 这是因为子类构造函数中会隐式调用父类的无参构造函数（通过super()），确保父类的初始化先于子类完成。
//2.会报错，无法运行。
//当子类定义了带参构造函数（如B(String name)），Java 不会再为其自动生成无参构造函数。
//此时创建B的实例时（new B()），会尝试调用B的无参构造函数，但该构造函数已不存在，导致编译错误。